1.14.4 后端事件抄送

1. 简介

当E聊后端触发了特定的事件后,可以以事件抄送的方式(发起一个POST请求)将该事件通知到业务系统上. 交互流程如下:

image-20220425114646711

2. 事件抄送配置

2.1 配置抄送地址的请求格式与返回格式

使用前业务后台需要在事件推送系统设置抄送接受地址URL, token等参数. 推送设置地址为: http://{部署 域名或IP}/v1/event_push

请求格式:

参数 名 说明 样例
appid 配置的app_id, 推送系统会根据该app_id识别是否同一个应 用 my_app
url 回调url, 推送系统会向当前URL发送GET请求进行绑定,发送 POST请求进行事件抄送 http://localhost/event_callback
token 该字段由业务系统生成,用于计算参数签名用,最大长度不 超过32字节 6wKBhXw1y

curl 请求格式举例:

curl -H "Content-Type:application/json" -X POST -d '{"appid": "my_app":
"http://localhost/event_callback, "token": "random_key"}' 'http://{部署域名或
IP}/v1/event_push/config'

收到来自事件推送系统的回调的返回格式:

参数名 说明 样例
nonce 通知id, 每次请求都不唯 一,可用来做API去重 1648093550
timestamp API发送的时间戳 1647511153
msg_signature 消息签名, 签名计算方法见 下方文档 3CB4357FE5A607654C97DEA9C949C18F
POST_BODY 从接收消息的URL中获取的 整个post数据 这里数据存储在http body中,以json格式组 织, 参考事件消息格式一节

收到来自事件推送系统的回调举例:

POST /event_callback?
msg_signature=3CB4357FE5A607654C97DEA9C949C18F&timestamp=1409659813&nonce=137262
3149 HTTP/1.1
Host: locahost
Content-Length: 364
{
"toappid": "my_app",
"body": "{}",
"msgType": "event",
"event": "BROADCAST_CLIENT_LOGIN"
}

3. 消息签名原理(msg_signature)

3.1 计算签名的算法

  1. 计算签名:
    dev_msg_signature=md5(sort(token、timestamp、nonce、msg_encrypt))
    
    sort的含义是将参数值按照字母字典排序,然后从小到大拼接成一个字符串 md5处理结果要使用32位大写的加密方式
  2. 比较dev_msg_signature和msg_signature是否相等,相等则表示验证通过

4. 事件消息格式

事件推送系统的事件会以特定的事件消息格式来进行推送,消息格式定义如下:

参数名 说明 样例
toappid 业务系统设定的appid my_app
createTime 消息创建时间戳(整型) 1647511153
msgType 消息类型,此时固定为: event event
event 事件类型 事件类型
body json格式具体业务正文 {"errno":"", "msg":""}

现事件类型有以下几种:

  1. BROADCAST_CLIENT_OFFLINE_MESSAGE("转发消息时客户端离线");
  2. BROADCAST_SEND_MESSAGE("客户端发消息")
  3. BROADCAST_CLIENT_LOGIN("客户端登录消息")
  4. BROADCAST_CLIENT_LOGOUT("客户端登出消息")
  5. BROADCAST_CLIENT_ONLINE("客户端在线消息")
  6. BROADCAST_CLIENT_OFFLINE("客户端掉线消息")

results matching ""

    No results matching ""